<?php

namespace app\common\model\Hotel;

// 引入TP基础模型
use think\Model;

//  酒店预定模型
class  Order extends Model
{
    protected $name = 'hotel_order';

    protected $append = [
        'status_text', // 订单状态
        'starttime_text', // 开始时间
        'endtime_text', // 结束时间
        'day_text', // 天数
        'startday_text', // 开始时间星期
        'endday_text', // 开始时间星期
        'type_text', // 支付方式
    ];

    public function getStarttimeTextAttr($value, $data)
    {
        $starttime = !empty($data['starttime']) ? $data['starttime'] : '';

        if ($starttime)
        {
            return   date("Y-m-d", $starttime);
        }
        else
        {
            return '';
        }
    }

    public function getEndtimeTextAttr($value, $data)
    {
        $endtime = !empty($data['endtime']) ? $data['endtime'] : '';

        if ($endtime)
        {
            return   date("Y-m-d", $endtime);
        }
        else
        {
            return '';
        }
    }

    // 订单状态数据
    public function statuslist()
    {
        return [
            '0' => __('未支付'),
            '1' => __('已支付'),
            '2' => __('已入住'),
            '3' => __('已退房'),
            '4' => __('已评价'),
            '-1' => __('申请退款'),
            '-2' => __('审核通过'),
            '-3' => __('审核不通过'),
        ];
    }

    // 订单状态的获取器
    public function getStatusTextAttr($value, $data)
    {
        $value = $value ? $value : (isset($data['status']) ? $data['status'] : '');
        $list = $this->statuslist();
        return isset($list[$value]) ? $list[$value] : '';
    }

    // 天数
    public function getDayTextAttr($value, $data)
    {
        $starttime = !empty($data['starttime']) ? $data['starttime'] : '';
        $endtime = !empty($data['endtime']) ? $data['endtime'] : '';
        $day = intval(($endtime - $starttime) / 86400);

        return $day;
    }

    // 开始时间星期
    public function getStartdayTextAttr($value, $data)
    {
        $starttime = !empty($data['starttime']) ? $data['starttime'] : '';

        if (empty($starttime))
        {
            return '';
        }

        $key = date("w", $starttime);

        $week = ['星期日','星期一','星期二','星期三','星期四','星期五','星期六'];

        return $week[$key];
    }

    public function getEnddayTextAttr($value, $data)
    {
        $endtime = !empty($data['endtime']) ? $data['endtime'] : '';
        if (empty($endtime))
        {
            return '';
        }

        $key = date("w", $endtime);

        $week = ['星期日','星期一','星期二','星期三','星期四','星期五','星期六'];

        return $week[$key];
    }

    //支付方式
    public function getTypeTextAttr($value, $data)
    {
        $type = isset($data['type']) ? trim($data['type']) : '';

        switch ($type)
        {
            case "money":
                return '余额支付';
            case "wx":
                return "微信支付";
            case "zfb":
                return "支付宝";
            default:
                return "未知支付方式";
        }
    }

    public function room()
    {
        return $this->belongsTo('app\common\model\Hotel\Room', 'roomid', 'id', [], 'LEFT')->setEagerlyType(0);
    }
}